
function func1 () {
  func2();
}
async function func2 () {
  // eslint-disable-next-line no-useless-catch
  try {
    await func3();
  } catch (error) {
    console.log(error);
  }

}

// console.log(func3());
function func3 () {

  return new Promise((resolve, reject) => {
    setTimeout(function (){
      const r = Math.random();
      console.log(r);
      if (r < 0.5) {
        reject('error');
      }
    }, 1000);
  });

  // setTimeout(() => {
  //   throw new Error('error');
  // }, 1000);

  // return 'success';
}

// 一个函数调用其他函数有以下几种可能
// 无异常,正确返回结果
// 发生异常 返回了结果
// 发生了异常

// 在函数内部判断是否有异常 有的话 就return false/null
// 或者是 throw new Error 


// 全局异常处理 在所有函数的最顶部,制作一个机制,监听所有的任何异常

func1();